package dao.jpa;

import dao.CursoDisciplinaDAO;
import java.util.List;
import javax.persistence.Query;
import modelo.Curso;
import modelo.CursoDisciplina;
import modelo.Disciplina;
import util.JPAUtil;

/**
 *
 * @author Jorge
 */
public class CursoDisciplinaJpaDAO extends AbstractJpaDao<CursoDisciplina, Long> implements CursoDisciplinaDAO {

    public CursoDisciplinaJpaDAO() {
        super(CursoDisciplina.class);
    }

    @Override
    public List<CursoDisciplina> getAll() {
        String s = "from CursoDisciplina";
        Query query = JPAUtil.getEntityManager().createQuery(s);

        return query.getResultList();
    }

    public CursoDisciplina getPorId(Long id) {
        String q = "select cd from CursoDisciplina cd where cd.id=?";
        Query query = JPAUtil.getEntityManager().createQuery(q);
        query.setParameter(1, id);

        return (CursoDisciplina) query.getSingleResult();
    }

    public List<CursoDisciplina> getPorCurso(Curso curso) {
        String q = "select cd from CursoDisciplina cd where cd.curso=?";
        Query query = JPAUtil.getEntityManager().createQuery(q);
        query.setParameter(1, curso);

        return query.getResultList();
    }

    public List<CursoDisciplina> getPorDisciplina(Disciplina disciplina) {
        String q = "select cd from CursoDisciplina cd where cd.disciplina=?";
        Query query = JPAUtil.getEntityManager().createQuery(q);
        query.setParameter(1, disciplina);

        return query.getResultList();
    }

    public CursoDisciplina getPorCursoEDisciplina(Curso curso, Disciplina disciplina) {
        String q = "select cd from CursoDisciplina cd where cd.curso=? and cd.disciplina=?";
        Query query = JPAUtil.getEntityManager().createQuery(q);
        query.setParameter(1, curso);
        query.setParameter(2, disciplina);

        return (CursoDisciplina) query.getSingleResult();
    }
}
